﻿using Sunny.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SprayProcessSCADASystem.UserControls
{
    public partial class UserDeviceUnitControl : UIUserControl
    {
        public UserDeviceUnitControl()
        {
            InitializeComponent();
        }

        #region 设备名称属性
        private string? _deviceName;

        [Browsable(true)]//使属性可以暴露出来
        [Category("自定义属性")] //设置属性的分类
        [Description("按钮名称")] //设置属性的描述
        public string? DeviceName
        {
            get { return _deviceName; }
            set
            {
                _deviceName = value;
                this.lbl_DeviceName.Text = _deviceName;
            }
        }
        #endregion

        #region 设备状态属性   为什么设备状态要暴露出来？ 不是点击按钮就能改变状态吗？
        /// <summary>
        /// 因为我们可能在其他地方需要根据设备的状态，来做一些事情，比如说，如果设备是打开状态，我们就要执行一些操作，如果设备是关闭状态，我们就要执行另一些操作。
        ///而因为UISwitch是放在UserDeviceUnitControl里面的，我们没法直接通过代码来获取到Active属性，所以我们需要暴露出这个属性，让其他地方可以获取到设备的状态。
        /// </summary>
        private bool _state;
        [Browsable(true)]//使属性可以暴露出来，显示到窗口中
        [Category("自定义属性")]//自定义属性
        [Description("设备状态")]
        public bool State
        {
            get
            {
                _state = this.sw_Device.Active;
                return _state;
            }
            set
            {
                _state = value;

                this.sw_Device.Active = _state;
            }
        }
        #endregion


        #region 设备变量属性
        private string _openVariableName = "";
        [Browsable(true)]//使属性可以暴露出来，显示到窗口中
        [Category("自定义属性")]//自定义属性
        [Description("获取变量名称")]
        public string OpenVariableName
        {
            get { return _openVariableName; }
            set { _openVariableName = value; }
        }



        private string _closeVariableName = "";
        [Browsable(true)]//使属性可以暴露出来，显示到窗口中
        [Category("自定义属性")]//自定义属性
        [Description("获取变量名称")]
        public string CloseVariableName
        {
            get { return _closeVariableName; }
            set { _closeVariableName = value; }
        }
        #endregion


        #region 自定义事件    待会怎么使用
        [Browsable(true)]
        [Category("自定义事件")]
        [Description("点击事件")]
        public event EventHandler ClickEvent;
        private void sw_Device_Click(object sender, EventArgs e)
        {
            ClickEvent?.Invoke(this, e);
        }
        #endregion



    }
}
